home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 February
/
EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso
/
earcd
/
comm2
/
zpont311.lha
/
zpoint-3.11
/
Rexx
/
ZPSortPM.zprx
< prev
Wrap
Text File
|
1995-09-03
|
6KB
|
177 lines
/*
$VER: ZPSortPM.zprx V1.0 (31.08.1995) - Björn Koch
Dieses Skript wurde speziell für Zodiac`s Point erstellt, und dient zum
automatischen internen Weiterleiten von Nachrichten ausgewählter Personen.
Motiv für die Erstellung dieses Skriptes war die riesige Unordnung in meinem
persönlichen Postfach und der Wunsch, ausgewählte Schriftverkehre geordnet zu
archivieren und damit das Postfach zu entlasten. Ebenso war ein vernüftiges
Verwalten von Mailinglisten ein Beweggrund.
Dieses Skript darf beliebig kopieren werden, solange es zusammen mit
Zodiac's Point eingesetzt wird. Veränderungen ohne Erlaubnis des
Autors (außer dem Konfigurationsteil) sind nicht erlaubt.
Hinweise zur Installation:
Einfach dieses Skript in das Rexx-Verzeichnis von ZP kopieren, die
Feinabstimmung vornehmen und auf Wunsch die Zeile
"F1:SYS:Rexxc/rx ZPoint:Rexx/ZPSortPM.zprx %s"
in die Datei 'fkeys.zp' einfügen.
Viel effektiver jedoch ist das Einfügen in die Skript-Datei
'stepin.zp' des entsprechenden Brettes. Dann sollte der Eintrag wie
folgt lauten:
"Run >NIL: SYS:Rexxc/rx ZPoint:Rexx/ZPSortPM.zprx".
Dabei bitte an das S-Bit denken !!!
Nähere Angaben zu den Dateien 'fkeys.zp' und 'stepin.zp' sind in der
Guide-Datei zu Zodiac`s Point zu finden.
Zuerst ist es ratsam, in ZPoint entsprechend neue Bretter anzulegen, wohin die
Nachrichten weitergeleitet werden sollen (z.B. "ZP-Server"wie in der zweiten
Zeile des Beispiels weiter unten). Diese beim Server auch anzumelden wird wenig
Sinn haben :). Ebenso sollte man in diesem Brett keine "öffentlichen"
Nachrichten schreiben, da diese mit ziemlicher Sicherheit nicht zugestellt
werden können ;).
Dann muß noch eine Datei erstellt werden, in der die ausgewählten Personen mit
ihren Parametern für dieses Skript aufgelistst sind. Das Format der Liste sieht
pro Person eine Zeile vor, die genau drei (3) Wörter enthalten muß. Das erste
Wort ist die E-Mail-Adresse der Person, das zweite Wort ist das Brett, in das
die jeweiligen Nachrichten weitergeleitet werden sollen und das dritte Wort gibt
an, ob die Nachrichten nach dem Weiterleiten zum Löschen markiert werden sollen
(1 für JA, 0 für NEIN).
Beispiel:
Zodiac@Darkness.gun.de /t-netz/support/zodiacs_point-beta 0
FileServer@Darkness.gun.de ZP-Server 1
Joe_Random@foo.bar.edu Nachrichtenarchiv 0
Die erste Zeile würde nun dafür sorgen, daß alle Nachrichten im aktuellen
Brett von Zodiac@Darkness.gun.de intern ins das Brett
/t-netz/support/zodiacs_point-beta weitergeleitet und die Origalnachrichten
NICHT zum Löschen markiert werden (über den SINN dieser Aktion reden wir hier
mal nicht ;))). Die zweite Zeile würde alle Nachrichten im aktuellen Brett vom
FileServer der Darkness in das Brett ZP-Server intern weiterleiten und die
Originalnachrichten zum Löschen markieren. Die letzte Zeile würde dafuer Sorgen,
daß alle Nachrichten von Joe_Random@foo.bar.edu im aktuellen Brett ins
Nachrichtenarchiv weitergeleitet werden ohne dabei die Originalnachrichten zum
Löschen zu markieren.
Die Benutzung und Installation dieses Skriptes erfolgt auf eigene
Gefahr, und der Autor übernimmt keine Haftung für eventuelle Schäden
jeder Art, die durch die Benutzung oder Installation erstanden sind
oder entstehen können.
Für Anregungen, Fehlermeldungen und Verbesserungsvorschläge ist der
Autor sehr dankbar und wie folgt zu erreichen:
Björn Koch H.Humpel@NOSTLGIC.tng.oche.de
*/
/* Die Feinabstimmung: (Beginn Konfigurationsteil) */
ListDatei = "ZPoint:ZPSortPM.list" /* Die Liste der Betroffenen */
/* AB HIER BITTE NICHTS MEHR ÄNDERN!!! (Ende Konfigurationsteil) */
OPTIONS RESULTS
PARSE ARG ZPPort
IF ZPPort == "" THEN
ZPPort = 'ZPoint'
ADDRESS VALUE ZPPort
WHICHLEVEL
Level=RESULT
IF Level ~= "BOARD" THEN DO
REQUESTNOTIFY " Dieses Skript arbeitet nur, wenn Du in einem Brett bist!!"
EXIT
END
CALL LeseListe
if (Anzahl ~= 0) THEN DO
GUILOCK ON
SELECTMESSAGE NONE
JUMPTOMESSAGE 1
Keine = 0
MESSAGEINFO AGE
if (Result = 'NEW') THEN
CALL CheckIt
DO while (Keine = 0)
JUMPTONEW DOWN
IF ~RC THEN
Keine = 1
else
CALL CheckIt
END
END
GUILOCK OFF
EXIT
/* Die Unterroutinen... */
LeseListe:
IF EXISTS(ListDatei) THEN DO
CALL Open('DateiList',ListDatei,'R')
Anzahl = 0
Zeile = ReadLn('DateiList')
Zeilenzahl = 1
DO WHILE(~EOF('DateiList'))
IF WORDS(Zeile) == 3 THEN DO
Absender.Anzahl = WORD(Zeile,1)
IF LASTPOS('@', Absender.Anzahl) ~= 0 THEN DO
Absender.Anzahl = UPPER(Absender.Anzahl)
Export.Anzahl = WORD(Zeile,2)
Delete.Anzahl = WORD(Zeile,3)
if ((Delete.Anzahl ~= 1)&(Delete.Anzahl ~= 0)) THEN DO
Delete.Anzahl = '0'
REQUESTNOTIFY " ERROR im DeleteIdentifier in Zeile "||Zeilenzahl||" !!! Setze Wert auf 0 !! "
END
Anzahl = Anzahl + 1
END
else
REQUESTNOTIFY " ERROR im AbsenderIdentifier in Zeile "||Zeilenzahl||" !!! "
END
else
REQUESTNOTIFY " ERROR in der Liste !! Falsche Anzahl Identifier in Zeile "||Zeilenzahl||" !!! "
Zeile = ReadLn('DateiList')
Zeilenzahl = Zeilenzahl + 1
END
END
else
REQUESTNOTIFY " Konnte Liste "||DateiListe||" nicht finden !!! "
CALL Close('DateiList')
RETURN
CheckIt:
MESSAGEINFO AUTHOR
Autor = WORD(Result, 1)
Autor = UPPER(Autor)
DO i = 0 to Anzahl-1
if (Autor = Absender.i) THEN DO
FORWARDMESSAGE Export.i INTERNAL
if (RC == 0) THEN
REQUESTNOTIFY " Konnte Nachricht NICHT weiterleiten !! "
else
if (Delete.i == 1) THEN
DELETE ONE
END
END
RETURN
/* ... und ENDE! */